/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tbp.model.domain.financeiro;

import br.com.tbp.model.domain.Consultor;
import br.com.tbp.model.domain.constant.TipoConsultor;
import java.util.Date;

/**
 *
 * @author Diego
 */
public class AjudaCusto {

    private long id;
    private String descricao;
    private Date dataLiberacao;
    private Date dataFechamento;
    private Consultor consultor;
    private Double valor;
    private int acessos;
    private int fechamento;
    private StatusAjuda status;
    private String observacao;
    private TipoConsultor tipo;

    public AjudaCusto() {
        this.dataLiberacao = new Date();
        this.fechamento = 0;
        this.status = StatusAjuda.PENDENTE;
    }

    public AjudaCusto(long id) {
        this.id = id;
    }

    public AjudaCusto(long id, int acessos, int fechamento) {
        this.id = id;
        this.acessos = acessos;
        this.fechamento = fechamento;
        this.status = StatusAjuda.PENDENTE;
    }

    public int getAcessos() {
        return acessos;
    }

    public void setAcessos(int acessos) {
        this.acessos = acessos;
    }

    public Consultor getConsultor() {
        return consultor;
    }

    public void setConsultor(Consultor consultor) {
        this.consultor = consultor;
    }

    public Date getDataLiberacao() {
        return dataLiberacao;
    }

    public void setDataLiberacao(Date data) {
        this.dataLiberacao = data;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public StatusAjuda getStatus() {
        return status;
    }

    public void setStatus(StatusAjuda status) {
        this.status = status;
    }

    public Double getValor() {
        return valor;
    }

    public void setValor(Double valor) {
        this.valor = valor;
    }

    public int getFechamento() {
        return fechamento;
    }

    public void setFechamento(int fechamento) {
        this.fechamento = fechamento;
    }

    public void adicionarAcessos(int acrescimo) {
        fechamento += acrescimo;
        if (fechamento >= acessos) {
            status = StatusAjuda.QUITADA;
            dataFechamento = new Date();
            fechamento = acessos;
        }
    }

    public String getAcessosRestantes() {
        int restante = acessos - fechamento;
        if (restante <= 0) {
            return "0";
        } else {
            return String.valueOf(restante);
        }
    }

    public Date getDataFechamento() {
        return dataFechamento;
    }

    public void setDataFechamento(Date dataFechamento) {
        this.dataFechamento = dataFechamento;
    }

    public TipoConsultor getTipo() {
        return tipo;
    }

    public void setTipo(TipoConsultor tipo) {
        this.tipo = tipo;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final AjudaCusto other = (AjudaCusto) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 67 * hash + (int) (this.id ^ (this.id >>> 32));
        return hash;
    }
}
